package com.exception;


import com.controller.vo.ResultVO;
import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * ClassName: GlobalExceptionAdvice
 * Description:
 *
 * @Author L_Z_R
 * @Create 2025/05/13 19:11
 * @Version 1.0
 */
@RestControllerAdvice(basePackages = "com.controller")
public class GlobalExceptionAdvice {

    /**
     * 处理最顶层的自定义异常
     * @param e 自定义异常
     * @return 返回结果
     * @param <T> 返回结果
     */
    @ExceptionHandler({GlobalException.class})
    public <T> ResultVO<T> handleGlobalException(GlobalException e) {
        ResultVO<T> resultVO = new ResultVO<>();
        resultVO.setCode(e.getErrorCode());
        resultVO.setMessage(e.getMessage());
        return resultVO;
    }

    /**
     * 捕获一个最大的异常兜底
     * @param e 捕获的异常
     * @return 返回结果
     * @param <T> 返回结果
     */

    @ExceptionHandler({Exception.class})
    public <T> ResultVO<T> handleException(Exception e) {
        e.printStackTrace();
        ResultVO<T> resultVO = new ResultVO<>();
        resultVO.setCode(HttpStatus.INSUFFICIENT_STORAGE.value());
        resultVO.setMessage("服务器繁忙,请稍后重试");
        return resultVO;
    }
}
